package Vue;

import javax.swing.JDialog;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JButton;

import Controleur.AjoutStationBtnListener;
import Controleur.AjoutStationCarteListener;
import Controleur.AjoutStationKeyListener;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;




/**
 * Définit les fenêtres d'ajout de station
 * 
 */
public class AjoutStation extends JDialog{

	private static final long serialVersionUID = 1L;
	/** Champ nom de la station */
	private JTextField Field_NomStation;
	/** Champ du nombre maximum de vélo */
	private IntegerField Field_NbMaxVelo;
	/** Coordonée X de la station */
	private DoubleField Field_X;
	/** Coordonée Y de la station */
	private DoubleField Field_Y;
	/**  Label décrivant si les données sont bien remplies ou non */
	private final JLabel lblToutesLesDonnes = new JLabel("Toutes les donn\u00E9es ne sont pas bien remplies.");
	/** Couleur rouge utilisée pour changer les labels */
	private final Color red=new Color(128, 0, 0);
	/** Couleur verte utilisée pour changer les labels */
	private final Color green=new Color(0, 128, 0);
	/** Bouton validant l'ajout de la station */
	private final JButton btnValider = new JButton("Valider");
	private JButton btnChoisirCarte = new JButton("Choisir sur la carte");
	
	/**
	 * Instancie une nouvelle fenêtre d'ajout de station 
	 * @param map Carte
	 */
	public AjoutStation(final Map map) {
		setLocation(new Point(200, 200));
		setResizable(false);
		setMinimumSize(new Dimension(450, 500));
		
		JPanel panel = new JPanel();
		getContentPane().add(panel, BorderLayout.CENTER);
		panel.setLayout(null);
		
		JLabel lblAjouterUneStation = new JLabel("Ajouter une station");
		lblAjouterUneStation.setFont(new Font("Tahoma", Font.BOLD, 16));
		lblAjouterUneStation.setBounds(142, 13, 171, 29);
		panel.add(lblAjouterUneStation);
		
		JLabel lblNom = new JLabel("Nom");
		lblNom.setBounds(46, 92, 56, 16);
		panel.add(lblNom);
		
		JLabel lblNombreMaximalDe = new JLabel("Nombre maximal de v\u00E9los");
		lblNombreMaximalDe.setBounds(46, 158, 158, 16);
		panel.add(lblNombreMaximalDe);
		
		JLabel lblCoordonneX = new JLabel("Coordonn\u00E9e X");
		lblCoordonneX.setBounds(46, 224, 97, 16);
		panel.add(lblCoordonneX);
		
		JLabel lblCoordoneY = new JLabel("Coordon\u00E9e Y");
		lblCoordoneY.setBounds(46, 253, 97, 16);
		panel.add(lblCoordoneY);
		
		Field_NomStation = new LimitedTextField(150);
		Field_NomStation.setBounds(223, 89, 116, 22);
		panel.add(Field_NomStation);
		Field_NomStation.setColumns(10);
		
		Field_NbMaxVelo = new IntegerField();
		Field_NbMaxVelo.setBounds(223, 155, 116, 22);
		panel.add(Field_NbMaxVelo);
		Field_NbMaxVelo.setColumns(10);
		
		Field_X = new DoubleField();
		Field_X.setBounds(223, 221, 116, 22);
		panel.add(Field_X);
		Field_X.setColumns(10);
		

		Field_Y = new DoubleField();
		Field_Y.setBounds(223, 250, 116, 22);
		
		panel.add(Field_Y);
		Field_Y.setColumns(10);
		
		btnValider.setEnabled(false);
		btnValider.setForeground(new Color(0, 128, 0));
		btnValider.setFont(new Font("Tahoma", Font.BOLD, 14));
		btnValider.setBounds(155, 371, 97, 25);
		panel.add(btnValider);
		
		lblToutesLesDonnes.setBounds(75, 342, 277, 16);
		panel.add(lblToutesLesDonnes);
		lblToutesLesDonnes.setForeground(red);
		
		
		btnChoisirCarte.setForeground(Color.BLUE);
		btnChoisirCarte.setBounds(46, 271, 158, 25);
		panel.add(btnChoisirCarte);
		btnChoisirCarte.addActionListener(new AjoutStationCarteListener(this,map));
		
		
		// Relier au controleur
		btnValider.addActionListener(new AjoutStationBtnListener(this,map));
		Field_NomStation.addKeyListener(new AjoutStationKeyListener(this));
		Field_NbMaxVelo.addKeyListener(new AjoutStationKeyListener(this));
		Field_X.addKeyListener(new AjoutStationKeyListener(this));
		Field_Y.addKeyListener(new AjoutStationKeyListener(this));
		
		
	}

	/**
	 * Getter du TextField NomStation 
	 * @return Champ Nom de la station
	 */
	public JTextField getField_NomStation() {
		return Field_NomStation;
	}

	/**
	 * Getter du TextField NbMaxVelo
	 * @return le Champ de nombre max de vélo dans la station
	 */
	public JTextField getField_NbMaxVelo() {
		return Field_NbMaxVelo;
	}

	/**
	 * Getter du TextField X
	 * @return Champ coordonnée X de la station
	 */
	public JTextField getField_X() {
		return Field_X;
	}

	/**
	 * Getter du TextField Y
	 * @return Champ coordonnée Y de la station
	 */
	public JTextField getField_Y() {
		return Field_Y;
	}

	/**
	 * Getter BtnValider
	 * @return le bouton valider
	 */
	public JButton getBtnValider() {
		return btnValider;
	}

	/**
	 * Getter du Label lblToutesLesDonnes 
	 * @return Label décrivant si les données sont bien remplies ou non
	 */
	public JLabel getLblToutesLesDonnes() {
		return lblToutesLesDonnes;
	}

	/**
	 * Getter Color red
	 * @return la couleur rouge
	 */
	public Color getRed() {
		return red;
	}

	/**
	 * Getter Color green
	 * @return la couleur verte
	 */
	public Color getGreen() {
		return green;
	}
	
	/**
	 * Méthode fermant la fenêtre
	 */
	public void close(){this.dispose();}
}
